// 深色主题
export var Solarized_Darcula = {
  foreground: '#d2d8d9',
  background: '#3d3f41',
  cursor: '#d0d0d0',

  black: '#25292a',
  brightBlack: '#25292a',

  red: '#f24840',
  brightRed: '#f24840',

  green: '#629655',
  brightGreen: '#629655',

  yellow: '#b68800',
  brightYellow: '#b68800',

  blue: '#2075c7',
  brightBlue: '#2075c7',

  magenta: '#797fd4',
  brightMagenta: '#797fd4',

  cyan: '#15968d',
  brightCyan: '#15968d',

  white: '#d2d8d9',
  brightWhite: '#d2d8d9'
}

// 浅色主题
export var GitHub = {
  foreground: '#3e3e3e',
  background: '#f4f4f4',
  cursor: '#3f3f3f',

  black: '#3e3e3e',
  brightBlack: '#666666',

  red: '#970b16',
  brightRed: '#de0000',

  green: '#07962a',
  brightGreen: '#87d5a2',

  yellow: '#f8eec7',
  brightYellow: '#f1d007',

  blue: '#003e8a',
  brightBlue: '#2e6cba',

  magenta: '#e94691',
  brightMagenta: '#ffa29f',

  cyan: '#89d1ec',
  brightCyan: '#1cfafe',

  white: '#ffffff',
  brightWhite: '#ffffff'
}

export var GetTermSize = (term) => {
  const MINIMUM_COLS = 2
  const MINIMUM_ROWS = 1
  const core = term._core
  const dims = core._renderService.dimensions

  if (dims.css.cell.width === 0 || dims.css.cell.height === 0) {
    return undefined
  }

  const scrollbarWidth = term.options.scrollback === 0 ? 0 : core.viewport.scrollBarWidth
  const parentElementStyle = window.getComputedStyle(term.element.parentElement)
  const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'))
  const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')))
  const elementStyle = window.getComputedStyle(term.element)
  const elementPadding = {
    top: parseInt(elementStyle.getPropertyValue('padding-top')),
    bottom: parseInt(elementStyle.getPropertyValue('padding-bottom')),
    right: parseInt(elementStyle.getPropertyValue('padding-right')),
    left: parseInt(elementStyle.getPropertyValue('padding-left'))
  }
  const elementPaddingVer = elementPadding.top + elementPadding.bottom
  const elementPaddingHor = elementPadding.right + elementPadding.left
  const availableHeight = parentElementHeight - elementPaddingVer
  const availableWidth = parentElementWidth - elementPaddingHor - scrollbarWidth
  const geometry = {
    cols: Math.max(MINIMUM_COLS, Math.floor(availableWidth / dims.css.cell.width)),
    rows: Math.max(MINIMUM_ROWS, Math.floor(availableHeight / dims.css.cell.height))
  }
  return geometry
}
